diff --git a/system/libraries/Sha1.php b/system/libraries/Sha1.php
index 93982bf..cc6e212 100644
--- a/system/libraries/Sha1.php
+++ b/system/libraries/Sha1.php
@@ -80,7 +80,7 @@
 		$d =  271733878;
 		$e = -1009589776;
 
-		for ($i = 0; $i < sizeof($x); $i += 16)
+		for ($i = 0; $i < count($x); $i += 16)
 		{
 			$olda = $a;
 			$oldb = $b;
diff --git a/system/libraries/Xmlrpc.php b/system/libraries/Xmlrpc.php
index b077d3d..987f274 100644
--- a/system/libraries/Xmlrpc.php
+++ b/system/libraries/Xmlrpc.php
@@ -133,7 +133,7 @@
 
 	function initialize($config = array())
 	{
-		if (sizeof($config) > 0)
+		if (count($config) > 0)
 		{
 			foreach ($config as $key => $val)
 			{
@@ -554,7 +554,7 @@
 		{
 			reset($xmlrpc_val->me);
 			list($a,$b) = each($xmlrpc_val->me);
-			$size = sizeof($b);
+			$size = count($b);
 			
 			$arr = array();
 
@@ -619,9 +619,9 @@
 		parent::CI_Xmlrpc();
 		
 		$this->method_name = $method;
-		if (is_array($pars) && sizeof($pars) > 0)
+		if (is_array($pars) && count($pars) > 0)
 		{
-			for($i=0; $i<sizeof($pars); $i++)
+			for($i=0; $i<count($pars); $i++)
 			{
 				// $pars[$i] = XML_RPC_Values
 				$this->params[] = $pars[$i];
@@ -639,7 +639,7 @@
 		$this->payload .= '<methodName>' . $this->method_name . "</methodName>\r\n";
 		$this->payload .= "<params>\r\n";
 		
-		for($i=0; $i<sizeof($this->params); $i++)
+		for($i=0; $i<count($this->params); $i++)
 		{
 			// $p = XML_RPC_Values
 			$p = $this->params[$i];
@@ -737,7 +737,7 @@
 		//  PARSE XML DATA
 		//-------------------------------------  	
 
-		if ( ! xml_parse($parser, $data, sizeof($data)))
+		if ( ! xml_parse($parser, $data, count($data)))
 		{
 			$errstr = sprintf('XML error: %s at line %d',
 					xml_error_string(xml_get_error_code($parser)),
@@ -1137,7 +1137,7 @@
 		{
 			$parameters = array();
 		
-			for ($i = 0; $i < sizeof($this->params); $i++)
+			for ($i = 0; $i < count($this->params); $i++)
 			{
 				$a_param = $this->decode_message($this->params[$i]);
 				
@@ -1171,7 +1171,7 @@
 			
 			$arr = array();
 
-			for($i = 0; $i < sizeof($b); $i++)
+			for($i = 0; $i < count($b); $i++)
 			{
 				$arr[] = $this->decode_message($param->me['array'][$i]);
 			}
@@ -1340,7 +1340,7 @@
 			case 2:
 				// array
 				$rs .= "<array>\n<data>\n";
-				for($i=0; $i < sizeof($val); $i++)
+				for($i=0; $i < count($val); $i++)
 				{
 					$rs .= $this->serializeval($val[$i]);
 				}
diff --git a/system/libraries/Xmlrpcs.php b/system/libraries/Xmlrpcs.php
index cdbdee9..3f53849 100644
--- a/system/libraries/Xmlrpcs.php
+++ b/system/libraries/Xmlrpcs.php
@@ -204,7 +204,7 @@
 			$m = new XML_RPC_Message($parser_object->xh[$parser]['method']);
 			$plist='';
 			
-			for($i=0; $i < sizeof($parser_object->xh[$parser]['params']); $i++)
+			for($i=0; $i < count($parser_object->xh[$parser]['params']); $i++)
 			{
 				if ($this->debug === TRUE)
 				{
@@ -289,13 +289,13 @@
 		if (isset($this->methods[$methName]['signature']))
 		{
 			$sig = $this->methods[$methName]['signature'];
-			for($i=0; $i<sizeof($sig); $i++)
+			for($i=0; $i<count($sig); $i++)
 			{
 				$current_sig = $sig[$i];
 		
-				if (sizeof($current_sig) == sizeof($m->params)+1)
+				if (count($current_sig) == count($m->params)+1)
 				{
-					for($n=0; $n < sizeof($m->params); $n++)
+					for($n=0; $n < count($m->params); $n++)
 					{
 						$p = $m->params[$n];
 						$pt = ($p->kindOf() == 'scalar') ? $p->scalarval() : $p->kindOf();
@@ -385,11 +385,11 @@
 				$sigs = array();
 				$signature = $this->methods[$method_name]['signature'];
 				
-				for($i=0; $i < sizeof($signature); $i++)
+				for($i=0; $i < count($signature); $i++)
 				{
 					$cursig = array();
 					$inSig = $signature[$i];
-					for($j=0; $j<sizeof($inSig); $j++)
+					for($j=0; $j<count($inSig); $j++)
 					{
 						$cursig[]= new XML_RPC_Values($inSig[$j], 'string');
 					}
@@ -451,7 +451,7 @@
 			$m = new XML_RPC_Message($value[0]);
 			$plist='';
 			
-			for($i=0; $i < sizeof($value[1]); $i++)
+			for($i=0; $i < count($value[1]); $i++)
 			{
 				$m->addParam(new XML_RPC_Values($value[1][$i], 'string'));
 			}
@@ -510,7 +510,7 @@
 			return $this->multicall_error('notarray');
 			
 		list($a,$b)=each($params->me);
-		$numParams = sizeof($b);
+		$numParams = count($b);
 
 		$msg = new XML_RPC_Message($scalar_value);
 		for ($i = 0; $i < $numParams; $i++)
